package com.atguigu.user.controller;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.atguigu.Result;
import com.atguigu.user.domain.UserInfo;
import com.atguigu.user.service.UserService;
import com.maxmind.geoip2.exception.GeoIp2Exception;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;

import java.io.IOException;

@RestController//表明此类是一个控制器类,且返回的不是视图，而是数据
@RequestMapping("/user")//控制器类的基路由
public class UserController {
    @Resource
    private UserService userService;


    /**
     * 发送验证码
     * @param phone
     * @return
     */
    @PostMapping("/sendCode")//表示处理post请求，路由是register
    public Result sendCode(@RequestParam String phone){
        return userService.sendCode(phone);
    }

    /**
     * 登录，若没有账号，则注册并登录
     * @param phone
     * @param code
     * @return
     */
    @PostMapping("/loginWithRegister")//表示处理post请求，路由是register
    public Result loginController(@RequestParam String phone,@RequestParam String code){
        return userService.loginWithRegister(phone,code);
    }


    /**
     * 从DB获取用户信息
     * @return
     */
    @GetMapping("/meFromBd")
    public Result meFormDb(){
        return userService.getUser();
    }

    /**
     * 从后台获取用户信息
     * @return
     */
    @GetMapping("/meNow")
    public Result meNow(){
        // TODO 获取当前登录的用户并返回
        UserDTO userDTO= UserHolder.getUser();
        return Result.success(userDTO);
    }

    /**
     * 设置个人信息页面
     * @param userInfo
     * @return
     */
    @PostMapping("/setProfile")
    public Result setProfile(@RequestBody UserInfo userInfo){
        return userInfoService.updateProfile(userInfo);
    }

    /**
     * 获取个人信息
     * @return
     */
    @GetMapping("/getProfile")
    public Result getProfile(){
        return userInfoService.getProfile();
    }


}
